/*该文件用于创建vuex中最为核心的store*/
//引入Vue
import Vue from 'vue'
//引入vuex
import Vuex from 'vuex'
import uuid from 'uuid-js'
//应用vuex插件 use vuex插件必须在创建store之前
Vue.use(Vuex)
//准备actions对象---响应组件中的动作
const actions = {
    incrementIfOdd(context, value) {
        if (context.state.sum % 2) {
            context.commit('INCREMENT', value)
        }
    },
    incrementSecondLater(context, value) {
        setTimeout(() => {
            context.commit('INCREMENT', value)
        }, 1000)
    }
}
//准备mutations对象---修改state中的数据
const mutations = {
    INCREMENT(state, value) {
        state.sum += value
    },
    DECREMENT(state, value) {
        state.sum -= value
    },
    ADD_PERSON(state, value) {
        const person = {
            id: uuid.create().hex,
            name: value,
        }
        state.personList.push(person)
    }
}
//准备state对象---保存具体的数据
const state = {
    sum: 0,
    personList: [
        { id: '001', name: '张三' },
    ]
}
//准备getters对象---将state中的数据进行加工
const getters = {
    afterComputed(state) {
        return state.sum << 10
    }
}
//创建并暴露store
export default new Vuex.Store({
    state,
    actions,
    mutations,
    getters
})
